﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpSphinx.Linguist.Dictionary
{
     public static class DictionaryHelper
    {

        /// <summary>
        /// Spelling of the sentence start word. 
        /// </summary>
        public  const String SENETECE_START_SPELLING = "<s>";

        /// <summary>
        ///  Spelling of the sentence end word.
        /// </summary>
        public  const String SENTENCE_END_SPELLING = "</s>";

        /// <summary>
        /// Spelling of the 'word' that marks a silence
        /// </summary>
        public  const String SILENCE_SPELLING = "<sill>";

        /// <summary>
        ///  The property for the dictionary file path.
        /// </summary>
        public  const String PROP_DICTIONARY = "DictionnaryPath";

        /// <summary>
        ///  The property for the filler dictionary file path.
        /// </summary>
       // public static const String PROP_DICTIONARY = "FillerPath";

        /// <summary>
        /// The property that specifies whether to add a duplicate SIL-ending pronunciation. 
        /// </summary>
        public  const String PROP_ADD_SILL_ENDING_PRONUNCIATION = "AddSilEndingPronunciation";

        /// <summary>
        /// The property that specifies the word to substitute when a lookup fails to find the word in the
        /// dictionary. If this is not set, no substitute is performed.
        /// </summary>
        public  const String PROP_WORD_REPLACEMENT = "WordReplacement";


        /// <summary>
        /// The property that specifies whether the dictionary should return null if a word is not found in
        /// the dictionary, or whether it should throw an error. If true, a null is returned for words that are not found in
        /// the dictionary (and the 'PROP_WORD_REPLACEMENT' property is not set).
        /// </summary>
        public  const String PROP_ALLOW_MISSING_WORDS = "AllowMissingWords";

        /// <summary>
        /// The property that specifies whether the Dictionary.getWord() method should return a Word object even if the
        ///  word does not exist in the dictionary. If this property is true, and property allowMissingWords is also true, the
        ///  method will return a Word, but the Word will have null Pronunciations. Otherwise, the method will return null.
        ///  This property is usually only used for testing purposes.
        ///  
        /// </summary>
        public  const String PROP_CREATE_MISSING_WORDS = "CreateMissingWords";

        /// <summary>
        /// The property that defines the name of the unit manager that is used to convert strings to Unit objects 
        /// </summary>
        public  const String PROP_UINT_MANAGER = "UnitManager";

        /// <summary>
        /// The property for the custom dictionary file paths. This addenda property points to a possibly
        /// empty list of URLs to dictionary addenda.  Each addendum should contain word pronunciations in the same Sphinx-3
        /// dictionary format as the main dictionary.  Words in the addendum are added after the words in the main dictionary
        /// and will override previously specified pronunciations.  If you wish to extend the set of pronunciations for a
        /// particular word, add a new pronunciation by number.  For example, in the following addendum, given that the
        /// aforementioned main dictionary is specified, the pronunciation for 'EIGHT' will be overridden by the addenda,
        /// while the pronunciation for 'SIX' and 'ZERO' will be augmented and a new pronunciation for 'ELEVEN' will be
        /// added.
        ///                EIGHT   OW T
        ///                SIX(2)  Z IH K S
        ///                ZERO(3)  Z IY Rl AH
        ///                ELEVEN   EH L EH V AH N
        /// </summary>
        public  const String PROP_ADDENDA = "Addenda";
    }
}
